package com.back.demo.mapper;

import com.back.demo.mapper.myDO.*;
import com.back.demo.mapper.myDO.adminDO.ConditionsDO;
import com.back.demo.mapper.myDO.basicDO.ClassDO;
import com.back.demo.mapper.myDO.basicDO.MajorDO;
import com.back.demo.mapper.myDO.basicDO.MentorDO;
import com.back.demo.mapper.myDO.basicDO.StudentInformationDO;
import com.back.demo.service.MyEasyExcel.*;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;

@Mapper
@Repository
public interface AdminMapper {


    // import/submit
    // import/submit
    // import/submit
    Integer selectUserIdByStudentId(String studentId);

    void insertUser(String studentId);

    void insertUserRole(Integer userId);

    void insertStudentInformation(StudentInformationDO studentInformationDO);

    void updateStudentInformation(StudentInformationDO studentInformationDO);

    void updateStudentUsername(StudentInformationDO studentInformationDO);
    // import/submit
    // import/submit
    // import/submit

    // information
    // information
    // information
    Integer countStudent(ConditionsDO conditionsDO);

    ArrayList<StudentInformationDO> selectStudentInformation(ConditionsDO conditionsDO);

    StudentInformationDO selectStudentInformationByUserId(Integer userId);
    // information
    // information
    // information

    // count
    // count
    // count
    Integer countPaper(ConditionsDO conditionsDO);

    Integer countPatent(ConditionsDO conditionsDO);

    Integer countCompetition(ConditionsDO conditionsDO);

    Integer countSoftwareCompetition(ConditionsDO conditionsDO);

    Integer countOther(ConditionsDO conditionsDO);
    // count
    // count
    // count

    // acquire
    // acquire
    // acquire
    ArrayList<PaperDO> selectPaper(ConditionsDO conditionsDO);

    ArrayList<PatentDO> selectPatent(ConditionsDO conditionsDO);

    ArrayList<CompetitionDO> selectCompetition(ConditionsDO conditionsDO);

    ArrayList<SoftwareCopyrightDO> selectSoftwareCopyright(ConditionsDO conditionsDO);

    ArrayList<OtherDO> selectOther(ConditionsDO conditionsDO);
    // acquire
    // acquire
    // acquire

    // select detail
    // select detail
    // select detail
    PaperDO selectPaperDetail(Integer paperId);

    PatentDO selectPatentDetail(Integer patentId);

    CompetitionDO selectCompetitionDetail(Integer competitionId);

    SoftwareCopyrightDO selectSoftwareCopyrightDetail(Integer softwareCopyrightId);

    OtherDO selectOtherDetail(Integer otherId);
    // select detail
    // select detail
    // select detail

    // X
    // X
    // X
    List<PaperX> gatherPaper(ConditionsDO conditionsDO);

    List<PatentX> gatherPatent(ConditionsDO conditionsDO);

    List<CompetitionX> gatherCompetition(ConditionsDO conditionsDO);

    List<SoftwareCopyrightX> gatherSoftwareCopyright(ConditionsDO conditionsDO);

    List<OtherX> gatherOther(ConditionsDO conditionsDO);
    // X
    // X
    // X

    // major/class/mentor
    // major/class/mentor
    // major/class/mentor
    void insertMajor(MajorDO majorDO);

    void updateMajor(MajorDO majorDO);

    void removeMajor(Integer majorId);

    void insertClass(ClassDO classDO);

    void updateClass(ClassDO classDO);

    Integer countClass();

    void removeClass(Integer classId);

    void moveClassUp(Integer classId);

    void moveClassDown(Integer classId);

    void insertMentor(MentorDO mentorDO);

    void updateMentor(MentorDO mentorDO);

    void removeMentor(Integer mentorId);
    // major/class/mentor
    // major/class/mentor
    // major/class/mentor
}